/* Formats a file of text */

/* 直接连接所有文件，完成编译
$ gcc -o justify.out justify.c line.c word.c
或者用make工具，先编辑Makefile文件
$ make
运行命令
# ./justify.out <quote
*/

/* 程序的核心逻辑
for (; ;) {
    读单词;
    if (不能读单词) {
        输出行缓冲区的内容，不进行调整;
        终止程序;
    }
    if (行缓冲区已经填满) {
        输出行缓冲区的内容，进行调整;
        清楚行缓冲区;
    }
    往行缓冲区中添加单词;
}
*/
#include "line.h"
#include "word.h"
#define MAX_WORD_LEN 20
int main(void)
{
    char word[MAX_WORD_LEN+2];
    int word_len;

    clear_line();
    for (;;) {
        word_len = read_word(word, MAX_WORD_LEN+1);
        if (word_len == 0) {
            flush_line();
            return 0;
        }
        if (word_len > MAX_WORD_LEN)
            word[MAX_WORD_LEN] = '*';
        if (word_len + 1 > space_remaining()) {
            write_line();
            clear_line();
        }
        add_word(word);
    }
}